package enumdemo;

public enum Myenum {
    //在自定义的枚举类中定义一些成员
   Red(0,"RED"),Yellow(1,"YELLOW"),Blue(2,"BLUE"),Green(3,"GREEN");
    //使用myenum中的构造方法
    //在enum类中构造方法默认为私有的
    //假如要传入的数据
    //Red(0,"RED");
    public int order ;
    public String color;
    //枚举类中的构造方法是private修饰的。
    private Myenum(int order,String color){
        //枚举的构造方法中不允许调用super方法，那么此构造方法如何使用？
     //   super(color,order);
      this.order = order;
      this.color = color;
    }



    public static void main(String[] args) {
        //关于枚举类中方法的使用
        //1. values方法，用于获取枚举类中所有的枚举成员。
        //问题：在Enum类中并没有values方法，那么这个方法是从哪里来的？
      Myenum[] myenums = Myenum.values();
        for (Myenum myenum2: myenums) {
            //在获取了每个枚举成员后，开始进行每个枚举成员的索引位
            // 2. 调用ordinal方法
          System.out.println(  myenum2  +" "+myenum2.ordinal());
        }
        // 3.  valueof方法，将普通的字符串转换成枚举实例？
    //    System.out.println(Myenum.valueOf("GREEN"));
       //意思为：如果在枚举类中有此枚举成员，则会返回对应的枚举成员，如果没有则报异常
        System.out.println("Red");
     // 4. 第四个方法：compareTo方法
        //在Enum类中实现了comparable接口，实现了compareTo方法，用于比较两个
        //枚举成员的索引位置。
        System.out.println(Red.compareTo(Blue));
    }
    public static void main1(String[] args) {
        //1.   因为枚举类的构造方法为私有的，所以无法在其他类中进行实例化，
        //2.   枚举类中也无法进行实例化对象,这是为什么？
        //可以通过枚举类名直接调用其中的枚举成员。
        //System.out.println(Myenum.Blue);
//        Myenum myenum = new  Myenum();




    }

}
